package com.ljx.offer;

import org.junit.Test;

/**
 * @author 李捷禧
 * Date: 2023/3/28
 * ClassName: C_44
 */

public class C_44 {
    /**
     * 优化
     * @param n
     * @return
     */
    public int findNthDigit(int n) {
       if(n < 10) return n;
       int  d = 1; //位数
       long start = 1; //第几位数开始的第一个数
       long count = 9; //记录每一个位数最大的位数和，比如9就是第一位的位数和，180就是两位数的位数和
       while(n > count){
           n -= count;
           d++;
           start *= 10;
           count = start * d * 9;
       }
       //求出来的那个数，最后去取它的第几位数即可
        long num = start + (n - 1) / d;
        return Long.toString(num).charAt((n-1) % d) - '0';
    }

    @Test
    public void test(){
        System.out.println(findNthDigit(198));
    }

}
